Copyright(C) 1994,1995,1996,1997 Terumasa KODAKA , Takeshi KONO
■割り込みコントローラ
対象 ノーマル,ハイレゾ
チップ 8259A相当品
解説 o PC-9800(PC-98LT・HA,DB-P1を除く)では、割り込みコントローラ(PIC)として
8259A相当品を2個使用している。1個はCPUに対して直接割り込みリクエストを
行うマスタPIC、残りの1個はマスタPICを介して割り込みリクエストを行う
スレーブPICとして使用される。
o マスタPICとスレーブPICの接続概念図を示す。
マスタPIC
+-----------+
| IR0|←---- IR0(INT 08h)
| IR1|←---- IR1(INT 09h)
| IR2|←---- IR2(INT 0Ah)
CPU←|INT IR3|←---- IR3(INT 0Bh)
| IR4|←---- IR4(INT 0Ch)
| IR5|←---- IR5(INT 0Dh)
| IR6|←---- IR6(INT 0Eh)
| IR7|←+
+-----------+ |
+-----------------+
| スレーブPIC
| +-----------+
| | IR0|←---- IR8 (INT 10h)
| | IR1|←---- IR9 (INT 11h)
| | IR2|←---- IR10(INT 12h)
+--|INT IR3|←---- IR11(INT 13h)
| IR4|←---- IR12(INT 14h)
| IR5|←---- IR13(INT 15h)
| IR6|←---- IR14(INT 16h)
| IR7|←---- IR15(INT 17h)
+-----------+
u PC-98LT・HA,DB-P1は、V50内蔵ICU(Interrupt Control Unit)を使用し、
スレーブPICは持たない。V50内蔵ICUはμPD71059(8259A)互換。I/Oアドレスは
他機種のマスタPICと同じ。
o NMI(Non Maskable Interrupt)やSMM搭載CPUのSMI(System Management
Interrupt)は、割り込みコントローラでは制御できない。
o 割り込みコントローラ関連のI/Oアドレスは以下の通り。
-----------+----+---+-------------------------------------------------
I/Oアドレス|幅 |R/W|内容
-----------+----+---+-------------------------------------------------
0000h |BYTE|R/W|割り込みコントローラ(マスタ)
0002h |BYTE|R/W|割り込みコントローラ(マスタ)
0008h |BYTE|R/W|割り込みコントローラ(スレーブ)
000Ah |BYTE|R/W|割り込みコントローラ(スレーブ)
98D2h |BYTE|R/W|割り込みモード設定(bit 7〜0=IR7〜IR0)
98D4h |BYTE|R/W|割り込みモード設定(bit 7〜0=IR15〜IR8)
-----------+----+---+-------------------------------------------------
関連 I/O 0050h
I/O 0052h
I/O FE8Eh■[PC-9801NS/T・NS/R・P・NX/C・NS/A・NL/R,PC-9821Ne]
I/O 6B8Eh■[PC-9821Nf・Np・Ns・Ne2・Nd・Nm・Lt・Ld,PC-9801NL/A]
I/O 0259h,0A59h - 70〜73h
INT 08〜17h
I/O 0000h
名前 割り込みコントローラ(マスタ)
対象 全PC-9800シリーズ
チップ 8259A相当
機能
表[イニシャライズコマンドワード]参照
解説 o 割り込みコントローラのイニシャライズ、IRR(Interrupt Request Register)
とISR(In Service Register)の読み出し、EOI(End Of Interrupt)の送出など
に使用する。詳細はデータシート参照。
o PC-9800では、EOI時に「非特殊EOI」を使用する。
mov al,20h
out 0000h,al
でEOIが発行できる。
関連 I/O 0002h
INT 08〜0Fh
I/O 0002h
名前 割り込みコントローラ(マスタ)
対象 全PC-9800シリーズ
チップ 8259A相当
機能
[READ/WRITE]
bit 7: IR7(INT 0Fh)
bit 6: IR6(INT 0Eh)
bit 5: IR5(INT 0Dh)
bit 4: IR4(INT 0Ch)
bit 3: IR3(INT 0Bh)
bit 2: IR2(INT 0Ah)
bit 1: IR1(INT 09h)
bit 0: IR0(INT 08h)
1= 割り込み禁止
0= 割り込み許可
解説 o 割り込みコントローラ(マスタ)のIMRレジスタの読み書きを行う。
イニシャライズ時のコマンド(ICW2〜ICW4)書き込みにも使用する。
関連 I/O 0000h
INT 08〜0Fh
I/O 0008h
名前 割り込みコントローラ(スレーブ)
対象 ノーマル,ハイレゾ
チップ 8259A相当
機能
表[イニシャライズコマンドワード]参照
解説 o 割り込みコントローラのイニシャライズ、IRR(Interrupt Request Register)
とISR(In Service Register)の読み出し、EOI(End Of Interrupt)の送出など
に使用する。詳細はデータシート参照。
o PC-9800では、EOI時に「非特殊EOI」を使用する。
mov al,20h
out 0008h,al
でEOIが発行できる。なお、スレーブPICでEOI送出後、スレーブPICにサービス
中の割り込みがなくなったときにはマスタPICにもEOIを発行する必要がある。
以下のような処理を行う。
cli
mov al,20h ;Send EOI to SLAVE
out 0008h,al
jmp $+2 ;I/O WAIT
mov al,0Bh ;ISR read mode set(slave)
out 0008h,al
jmp $+2 ;I/O WAIT
in al,0008h ;ISR read(slave)
cmp al,00h ;slave pic in-service ?
jne EoiEnd
mov al,20h ;Send EOI to MASTER
out 0000h,al
EoiEnd: sti
関連 I/O 000Ah
INT 10〜17h
I/O 000Ah
名前 割り込みコントローラ(スレーブ)
対象 ノーマル,ハイレゾ
チップ 8259A相当
機能
[READ/WRITE]
bit 7: IR15(INT 17h)
bit 6: IR14(INT 16h)
bit 5: IR13(INT 15h)
bit 4: IR12(INT 14h)
bit 3: IR11(INT 13h)
bit 2: IR10(INT 12h)
bit 1: IR9 (INT 11h)
bit 0: IR8 (INT 10h)
1= 割り込み禁止
0= 割り込み許可
解説 o 割り込みコントローラ(スレーブ)のIMRレジスタの読み書きを行う。
イニシャライズ時のコマンド(ICW2〜ICW4)書き込みにも使用する。
関連 I/O 0008h
INT 10〜17h
表 イニシャライズコマンドワード
割り込みコントローラは、システム起動時にBIOS(ITF)によって以下のように
初期化される。通常、ユーザプログラムが割り込みコントローラを初期化
しなおす必要はない。
--------+--------------------------------------------------------------
コマンド名 |内容
--------+--------------------------------------------------------------
ICW1 |bit 7〜5: A7〜A5
| * PC-9800では000bに設定(86系CPUモード)
|bit 4: 常に1
|bit 3: LTIM
| * PC-9800では0に設定(エッジトリガモード)
| * PC-H98はレベルトリガモードもサポートしているが、
| 外部回路で処理しているため、PICはエッジトリガに
| 設定する。
|bit 2: ADI
| * PC-9800では0に設定(86系CPUモード)
|bit 1: SNGL
| * PC-9800(PC-98LT・HA,DB-P1を除く)では0に設定
| (ノットシングル)
| * PC-98LT・HA,DB-P1では1に設定(シングル)
|bit 0: IC4
| 0= ICW4を送出しない
| 1= ICW4を送出する
--------+--------------------------------------------------------------
ICW2 |bit 7〜3: T7〜T3
| * インタラプトベクタアドレスの上位5ビットを設定する
| PC-9800のマスタでは00001bを設定(INT 08〜0Fh)
| PC-9800のスレーブでは00010bを設定(INT 10〜17h)
| (PC-98HA,DB-P1は、V50内蔵ICUに00010bを設定する)
|bit 2〜0: A10〜A8
| * PC-9800では000bに設定(86系CPUモード)
--------+--------------------------------------------------------------
ICW3 |■マスタPIC
|bit 7〜0: S7〜S0
| * PC-9800(PC-98LT・HA,DB-P1を除く)のマスタでは
| 10000000bを設定(IR7のみスレーブ入力を持つ)。
|■スレーブPIC
|bit 7〜3: 常に0
|bit 2〜0: ID2〜ID0
| * PC-9800のスレーブでは111bに設定(スレーブID)
--------+--------------------------------------------------------------
ICW4 |bit 7〜5: 未定義(常に000b)
|bit 4: SFNM
| 1= スペシャルフリイネスティッドモード
| 0= ノットスペシャルフリイネスティッドモード
|bit 3: BUF
| * PC-9800では1に設定(バッファモード)
|bit 2: M/S
| * PC-9800のマスタでは1に設定
| * PC-9800のスレーブでは0に設定
|bit 1: AE01
| * PC-9800では0に設定(ノーマルEOI)
|bit 0: μPM
| * PC-9800では1に設定(86系CPUモード)
--------+--------------------------------------------------------------
I/O 98D2h,98D4h
名前 PIC割り込みモード制御
Undocumented
対象 PC-H98
チップ
機能
-----------+----+---+-------------------------------------------------
I/Oアドレス|幅 |R/W|内容
-----------+----+---+-------------------------------------------------
98D2h |BYTE|R/W|割り込みモード設定(bit 7〜0=IR7〜IR0)
98D4h |BYTE|R/W|割り込みモード設定(bit 7〜0=IR15〜IR8)
-----------+----+---+-------------------------------------------------
1= レベルトリガ
0= エッジトリガ(従来互換)
解説 o PC-H98では、割り込み信号線をレベルトリガに設定することもできる。この
ポートで、各割り込み信号線をエッジトリガで使用するか、レベルトリガで
使用するか設定する。
o この設定は、割り込みコントローラの外部回路に対して行われる。PC-9800
では、割り込みコントローラはエッジトリガで使用している。
レベルトリガモードのときは、レベルセンシティブの外部回路が、エッジ
トリガの信号を発生して割り込みコントローラに割り込みを掛けるように
なる。
関連